package com.ykh.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

/**
 * swagger配置类
 */
@EnableWebMvc
@Configuration
public class SwaggerConfig {
    // 配置Docket的bean实例
    @Bean
    public Docket docket() {
        // 调用apiInfo
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                /*select-api-paths是固定搭配*/
                .select()
                /**
                 * apis():指定扫描的接口
                 *  RequestHandlerSelectors:配置要扫描接口的方式
                 *       basePackage:指定要扫描的包
                 *       any:扫面全部
                 *       none:不扫描
                 *       withClassAnnotation:扫描类上的注解(参数是类上注解的class对象)
                 *       withMethodAnnotation:扫描方法上的注解(参数是方法上的注解的class对象)
                 */
                // 根据目录名进行修改
                // 只有扫描controller目录才不会出现basis error
                .apis(RequestHandlerSelectors.basePackage("com.ykh.controller"))
                /**
                 * paths():过滤路径
                 *  PathSelectors:配置过滤的路径
                 *      any:过滤全部路径
                 *      none:不过滤路径
                 *      ant:过滤指定路径:按照按照Spring的AntPathMatcher提供的match方法进行匹配
                 *      regex:过滤指定路径:按照String的matches方法进行匹配
                 */
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("enjoy_life-system项目") // 标题
                .description("本文档描述了enjoy_life-system后端接口文档") // 描述
                .version("1.0") // 版本
                .build(); // 创建
    }
}